package pe.com.hermes.hermetic.modelo.dao;

import pe.com.hermes.hermetic.beans.AbonoCSBean;
import pe.com.hermes.hermetic.beans.AbonoManualBean;
import pe.com.hermes.hermetic.beans.ActaBean;
import pe.com.hermes.hermetic.beans.AnomaliaBean;
import pe.com.hermes.hermetic.beans.ComprobanteServicioBean;
import pe.com.hermes.hermetic.beans.CuentaBean;
import pe.com.hermes.hermetic.beans.CuentaClienteBean;
import pe.com.hermes.hermetic.beans.EmpleadoBean;
import pe.com.hermes.hermetic.beans.FechaServidorBean;
import pe.com.hermes.hermetic.beans.LogBtmsBean;
import pe.com.hermes.hermetic.beans.LogTrasaccionesBean;
import pe.com.hermes.hermetic.beans.PuntoBean;
import pe.com.hermes.hermetic.beans.RemitenteBean;
import pe.com.hermes.hermetic.beans.TransaccionPedidoBean;

import java.util.List;

import pe.com.hermes.hermetic.beans.TipoMonedaAbonoBean;


public interface AbonosDAO {

    /* americo 02/10/2007 */

    public String validacionAbono(String tipo, String tipoOper, String serie, 
                                  String numero, String tipoDocumento);

    public int getCantidadActasAnomalia(String tipo, String serie, 
                                        String numero, String codBove);

    public int getIndicadorDescuadreActas(String tipo, String serie, 
                                          String numero);

    public String getNumeroTransaccion() throws Exception;

    public void insertarLineaTexto(TransaccionPedidoBean ptemporal);

    public String getIdentificacion(String tipo, String serie, String numero);

    public String getNombre(String tipo, String serie, String numero);

    public EmpleadoBean getNombreIdentificacion(final String tipo, final String serie, final String numero);

    public PuntoBean getInformacionClientePunto(String codigoPunto) throws Exception;

    public CuentaBean getCuentaTipoCuenta(String codigoSucursal, 
                                          String codigoCliente, 
                                          String tipoUnidadMoneda);

    public String getDescripcionDepProDis(String codigoDepartamento, 
                                          String codigoProvincia, 
                                          String codigoDistrito);

    public String getSecuenciaArchivo(String codigoCliente, String nombreTipo);

    public String getTipoCuenta(String codigoCliente, String codigoPunto, 
                                String codigoCuenta, String indReplace);

    //public void actualizaCuentasCliente(CuentaClienteBean cuenta);

    public String getDescripcionLogTransacciones(String codigoLog) throws Exception;

    public void insertaLogBtms(LogTrasaccionesBean log) ;

    //public void actualizaActa(ActaBean acta);
    public String actualizaActa(ActaBean actaBean) throws Exception;

    public List getAbonos(String cliente, String sucursal);

    public List abonosGenerados(final String fecha, final String hora, final String cliente, final String sucursal);

    public List getAbonosContinental(String cliente, String sucursal);
    
    public List getAbonosInterBank(String cliente, String sucursal);
    
    public List getAbonosBCP(String cliente, String sucursal);
    
    public List getAbonosScotiaBank(String cliente, String sucursal);
    
    public List getAbonosFinanciero(String cliente, String sucursal);

    public List<AbonoCSBean> getAbonosBanbif(String cliente, String sucursal);   

    public String validacionMontosParciales(String tipo, String serie, 
                                            String numero, String tipoDocumento);
                                            
    public double getMontoComprobanteServ(String tipoDocuCmpb, String serie, 
                                          String numCS, String tipoCuenta, String codBoveda);

    public double getMontoCuentaNormal(String tipoDocuCmpb, String serie, 
                                          String numCS, String codBoveda);

    public double getMontoCuentaInterna(String tipoDocuCmpb, String serie, 
                                        String numCS, String codBoveda);                                            
    
    public String getCodigoCta(String sucursal, String clienteCta, String cliente, String boveda);
    
    public ComprobanteServicioBean getDatosCS(String tipoDocuCmpb, String serie, String numCS, String codBove) throws Exception;
    
    public String getFecha2();

    public String getFecha1();

    public String completa_espacios_blanco(String cadena, String caracter, 
                                           String posicion, int longitud);

    public int cant_digi_significativos(String monto) throws Exception;

    public String getFechaddmmyyyyhh24miss();

    public String getFechaManana();

    public String getFecha3();

    public String getFecha4();

    public List getComprobantesActas(String numeroCargo);
    
    //public List getListaArchivoAbono(String codBanco, String codSucursal, String fechaCreacion, String numTran, String nombreArchivo);
    public List getListaArchivoAbono(String codBanco, String codSucursal, String fechaCreacion, String numTran, String nombreArchivo, String tipoUnidMone);

    public List getListaUltimoArchivoAbono(final String codBanco, final String codSucursal, final String tipoUnidMone);
    
    public String getNombreUltimoArchivoAbono(final String codBanco, final String codSucursal, final String tipoUnidMone);

    public String insertarLineaTexto(final String transaccion, String secuencia, String sucursal, String cliente,  String nombreArchivo, String usuario, String lineaTexto) throws Exception;

    public String insertarLineaTextoAbonos(final String transaccion, String secuencia, String sucursal, String cliente,  String nombreArchivo, String usuario, String lineaTexto, String tipoUnidMone) throws Exception;

    public String insertaLogBtms(final LogBtmsBean logBtmsBean) throws Exception;

    public List getListaUnidMonetaria(final String codBanco, final String codSucursal) throws Exception;

    public String eliminaLineasAbonos(final String codBanco, final String codSucursal) throws Exception;
    
    public String getConfigArchivo(final String codBanco, final String codConfig, final String tipoUnidMone) throws Exception;
    
    public CuentaBean getCuentaCliente(final String tipo, final String serie, final String numero, final String codBoveda) throws Exception;
    
    public AnomaliaBean getAnomaliaTipo(final String tipo, final String serie, final String numero, final String codBoveda) throws Exception;

    public boolean valiAbono(final String tip_docu_cmpb,final String cod_seri_cmpb, final String num_cmpb,final String cliente,final String sucursal, final String tip_query) throws Exception;
    
    public String getCuenta(String banco, String codCliente, String tipo) throws Exception;
    
    public String getCodigoReferencia(String tipo, String serie, String numero) throws Exception;
    
    public String insertarComprobanteAbonoLog(final String transaccionLog, 
                                              final String secuenciaLog,
                                              final String transaccion, 
                                              final String secuencia, 
                                              final String sucursal, 
                                              final String cliente,
                                              final String fechaGenArch,                                              
                                              final String montoCuenta,
                                              final String montoNeto,
                                              final String montoAnomalia,
                                              final String indCSRecuen,
                                              final String montoActa,
                                              final AbonoCSBean abonoBean) throws Exception;
    
    public String getValidaDuplicidadAbonos(final AbonoCSBean abonoBean) throws Exception;

    public List getHoraAbonosGenerados(final String cliente, 
                        final String sucursal, 
                        final String fecha) throws Exception;                        
                        
    public List abonosGeneradosDetalle(final String fecha, final String hora, final String cliente, final String sucursal) throws Exception;

    public String actualizaActaImpresion(final ActaBean actaBean)throws Exception;    
    
    public List getAbonosManuales(final String cliente, final String sucursal, final String serie, final String numCpmb, final String cargoIngreso, final String codCliente) throws Exception;
    
    public String getUltimaFechaImpresion(String cliente, String sucursal) throws Exception;
        
    public List getDetalleAbonosManuales(final String cliente, final String sucursal, final String cargoIngreso, final String codPunto, final String codBove, final String fechaContable) throws Exception;

    public String getNumeroTransaccionLog() throws Exception;

    public String insertarLogAbonoManual(final AbonoManualBean abonoManualBean) throws Exception;  

    public int getTotalAbonoManualLog(final String serie, final String numCS, final String tipoDocuCmpb, final String codBoveda, final String cargoIngreso) throws Exception;

    public List getAbonosManMayorCuantia(final String cliente, final String sucursal) throws Exception;  
    
    public List getUltimoAbonoManualImp(final String cliente, final String sucursal, final String ultimaFecha, final String tipUnidMone) throws Exception;
    
    public List getUltimoAbonoManualReImp(final String cliente, final String sucursal, final String ultimaFecha, final String tipUnidMone) throws Exception;
    
    public int getIndMayorCuantia(final String tipoUnidMone, final String montoContiene) throws Exception;
    
    public RemitenteBean getDatosRemitente(final String cliente) throws Exception;    
    
    public List<TipoMonedaAbonoBean> getListUltmArch(String codClie, String codSucuHtb,String tip_unid_mone);
}
